<?php
/**
 * @brief Klasa encyjna Category
 * 
 * Obiekty tej klasy reprezentują kategorie na które dzielą się terminy w 
 * słowniku towarów.
 * 
 */
class Application_Model_Category
{
    protected $_Category_id; /*!< Identyfikator kategorii. */
    protected $_name; /*!< Nazwa kategorii.*/
    
    /**
     * @brief Konstruktor 
     * 
     * Przyjmuje tablicę znaków i na jej podstawie uzupełnia pola,
     * przy pomocy setOptions.
     * @param array $options 
     */
    public function __construct(array $options = null) {
        if (is_array($options)) {
            $this->setOptions($options);
        }
    }

    /**
     * @brief Metoda uzupełniająca pola na podstawie wejściowej tablicy.
     * 
     * @param array $options
     * @return Obiekt tej klasu.
     */
    public function setOptions(array $options) {

        $methods = get_class_methods($this);

        foreach ($options as $key => $value) {

            $method = 'set' . ucfirst($key);

            if (in_array($method, $methods)) {

                $this->$method($value);
            }
        }
        return $this;
    }
    /**
     * @brief Metoda zwracająca identyfikator kategorii.
     *
     * @return int 
     */
    public function getCategory_id() {
        return $this->_Category_id;
    }
    /**
     * @brief Metoda ustawiająca identyfikator kategorii.
     *
     * @param int $_Category_id 
     */
    public function setCategory_id($_Category_id) {
        $this->_Category_id = $_Category_id;
    }
    /**
     * @brief Metoda zwracająca nazwę kategorii.
     *
     * @return String
     */
    public function getName() {
        return $this->_name;
    }
    /**
     * @brief Metoda ustawiająca nazwę kategorii.
     *
     * @param String $_name 
     */
    public function setName($_name) {
        $this->_name = $_name;
    }


}

